#!/bin/bash

###############################################
# IP地址冲突检测脚本
# 名称：detect_ip_conflict.sh
# 版本：1.0
# 作者：资深程序员
# 日期：2025-03-23
# 描述：
#   自动检测局域网内的IP冲突。
#   使用 ARP 包或 Ping 响应检查冲突。
#   生成日志文件，便于分析。
###############################################

LOG_FILE="$(dirname "$0")/ip_conflict.log"

# 显示帮助信息
show_help() {
    echo "用法： ./detect_ip_conflict.sh [选项]"
    echo "选项："
    echo "  -h, --help   显示帮助信息"
    echo "示例： ./detect_ip_conflict.sh"
}

# 记录日志
log() {
    echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}

# 检查并安装依赖
check_install() {
    local tool="$1"
    if ! command -v "$tool" &> /dev/null; then
        log "工具 $tool 未安装，正在安装..."
        sudo apt-get update && sudo apt-get install -y "$tool"
    fi
}

# ARP检测IP冲突
detect_arp_conflict() {
    log "开始进行ARP冲突检测..."
    check_install "arp-scan"
    sudo arp-scan -l | tee -a "$LOG_FILE"
}

# Ping检测IP冲突
detect_ping_conflict() {
    log "开始进行Ping冲突检测..."
    local ip_list=$(ip -4 addr show | grep inet | awk '{print $2}' | cut -d'/' -f1)
    for ip in $ip_list; do
        ping -c 1 -W 1 "$ip" > /dev/null 2>&1
        if [ $? -eq 0 ]; then
            log "IP地址 $ip 正在被使用。"
        fi
    done
}

# 主程序入口
main() {
    if [[ "$1" == "-h" || "$1" == "--help" ]]; then
        show_help
        exit 0
    fi

    log "开始IP地址冲突检测..."
    detect_arp_conflict
    detect_ping_conflict
    log "IP地址冲突检测完成。"
}

main "$@"
